Feature activation control and data prefetching with network-connected mobile devices

ABSTRACT

In some embodiments, an electronic device is disclosed for intelligently prefetching data via a computer network. The electronic device can include a device housing, a user interface, a memory device, and a hardware processor. The hardware processor can: communicate via a communication network; determine that the hardware processor is expected to be unable to communicate via the communication network; responsive to determining that the hardware processor is expected to be unable to communicate via the communication network, determine prefetch data to request prior to the hardware processor being unable to communicate via the communication network; request the prefetch data; receive and store the prefetch data prior to the hardware processor being unable to communicate via the communication network; and subsequent to the hardware processor being unable to communicate via the communication network, process the prefetch data with an application responsive to processing a first user input with the application.

RELATED APPLICATIONS

Any and all applications for which a domestic priority claim isidentified in the Application Data Sheet of the present application arehereby incorporated by reference under 37 CFR 1.57.

BACKGROUND

Many mobile device applications are run on client devices that send andreceive data in real-time. As a result, these mobile device applicationsgenerally become unusable without an active Internet connection. Evenwith improvements to cellular coverage and a surge in Wi-Fi hotspots,mobile device users often complain about network fluctuations,especially in crowded places or while travelling. Even in metropolitancities, the continuity of the network connections may not be perfect.With unreliable networks, limited bandwidth, and high latency, somemobile device applications are difficult for mobile device users toenjoy.

Additionally, geofencing is a technology that enables mobile deviceapplications to trigger an alert or action when a mobile device enters,leaves, or stays in certain virtual geographic boundaries, also known asa geofence.

SUMMARY

In some embodiments, an electronic device is disclosed for intelligentlyprefetching data via a computer network. The electronic device caninclude a device housing, a user interface, a memory device, and ahardware processor. The user interface can receive multiple user inputsfrom a user. The memory device can store an application. The hardwareprocessor can: communicate via a communication network with multiplesystems; determine that the hardware processor is expected to be unableto communicate via the communication network; responsive to determiningthat the hardware processor is expected to be unable to communicate viathe communication network, determine prefetch data to request prior tothe hardware processor being unable to communicate via the communicationnetwork; request the prefetch data from one of the mulitple systems viathe communication network; receive the prefetch data via thecommunication network and store the prefetch data to the memory deviceprior to the hardware processor being unable to communicate via thecommunication network; and subsequent to the hardware processor beingunable to communicate via the communication network, process theprefetch data with the application responsive to processing a first userinput of the multiple user inputs with the application.

The electronic device of the preceding paragraph can include one or moreof the following features: The hardware processor can determine theprefetch data to request by determining application data that is likelyto be utilized by the application upon processing of a second user inputof the multiple user inputs which is received subsequent to the hardwareprocessor being unable to communicate via the communication network. Thehardware processor can determine the prefetch data to request from asecond user input of the multiple user inputs this is not processed bythe application. The first user input can include a request to activatea feature of the application. The hardware processor can, subsequent tothe hardware processor being unable to communicate via the communicationnetwork, process the prefetch data with the application for the firsttime responsive to processing the first user input with the application.The hardware processor can: determine when and for how long the hardwareprocessor is expected to be unable to communicate via the communicationnetwork; and determine the prefetch data to request according to whenand for how long the hardware processor is expected to be unable tocommunicate via the communication network. The hardware processor candetermine from a second user input of the multiple user inputs that thehardware processor is expected to be unable to communicate via thecommunication network. The second user input can include a request toenter a mode in which wireless communications controlled by the hardwareprocessor are disabled and the user interface continues to be active andusable by the user. The second user input can include an indication thatthe user intends to transport the device housing to a geographiclocation where the hardware processor is unable to communicate via thecommunication network. The hardware processor can use the second userinput to generate a calendar event which indicates the geographiclocation as a place which the user is planning to visit or likely totravel through with the device housing. The electronic device includes apower source that can supply energy to the hardware processor, and thehardware processor can determine from an energy level of the powersource that the hardware processor is expected to be unable tocommunicate via the communication network. The hardware processor candetermine from a data message received via the communication networkthat the hardware processor is expected to be unable to communicate viathe communication network, the data message being generated by a remoteserver and indicating a prediction that the hardware processor isexpected to be unable to communicate via the communication network. Thehardware processor can: determine a geographic location of the hardwareprocessor; and determine from the geographic location that the hardwareprocessor is expected to be unable to communicate via the communicationnetwork. The hardware processor can determine from a bandwidthassociated with the communication network that the hardware processor isexpected to be unable to communicate via the communication network.

In some embodiments, a method is disclosed for intelligently prefetchingdata via a computer network. The method can include: receiving, by auser interface of a mobile device, multiple user inputs from a user;storing an application to a memory device of the mobile device; andunder control of a hardware processor: determining that the hardwareprocessor is expected to be unable to communicate via a communicationnetwork; in response to determining that the hardware processor isexpected to be unable to communicate via the communication network,determining prefetch data to request prior to the hardware processorbeing unable to communicate via the communication network; requestingthe prefetch data from one of multiple systems via the communicationnetwork; receiving the prefetch data via the communication network andstoring the prefetch data to the memory device prior to the hardwareprocessor being unable to communicate via the communication network; andsubsequent to the hardware processor being unable to communicate via thecommunication network, processing the prefetch data with the applicationfor the first time responsive to processing a first user input of themultiple user inputs with the application.

The method of the preceding paragraph can include one or more of thefollowing features: The determining the prefetch data to request caninclude determining application data that is likely to be utilized bythe application upon processing of a second user input of the multipleuser inputs which is received subsequent to the hardware processor beingunable to communicate via the communication network. The first userinput can include a request to activate a feature of the application.The method can further include determining when and for how long thehardware processor is expected to be unable to communicate via thecommunication network, and the prefetch data to request is determinedaccording to when and for how long the hardware processor is expected tobe unable to communicate via the communication network.

In some embodiments, non-transitory physical computer storage isdisclosed. The non-transitory physical computer storage can includecomputer-executable instructions stored thereon that, when executed byone or more processors of a mobile device, are configured to implement aprocess. The process can include: determining that the one or moreprocessors are expected to be unable to communicate via a communicationnetwork; in response to determining that the one or more processors areexpected to be unable to communicate via the communication network,determining prefetch data to request prior to the one or more processorsbeing unable to communicate via the communication network; requestingthe prefetch data from one of multiple systems via the communicationnetwork; receiving the prefetch data via the communication network andstoring the prefetch data to a memory device prior to the one or moreprocessors being unable to communicate via the communication network;and subsequent to the one or more processors being unable to communicatevia the communication network, processing the prefetch data responsiveto processing a first user input.

The non-transitory physical computer storage of the preceding paragraphcan include one or more of the following features: A second user inputcan be used for determining that the one or more processors are expectedto be unable to communicate via the communication network. The seconduser input can include a request to enter a mode in which wirelesscommunications controlled by the one or more processors are disabled anda user interface of the mobile device continues to be active and usableby a user of the mobile device.

Although the electronic devices, methods, or processes described in thepreceding paragraphs can determine that a processor may be expected tobe unable to communicate and then take actions responsive to orbefore/after being unable to communicate, the electronic devices,methods, or processes can additionally or alternatively determine that aprocessor may be expected to have a limited ability to communicate(sometimes referred to as limited connectivity) and then take theactions responsive to or before/after having the limited ability tocommunicate. The expected limited ability to communicate can be causedby an expected limited bandwidth of a communication channel, an expectedlimited total amount of data that may be communicated via acommunication channel, an expected limited reliability of acommunication channel (for example, such that the communication channelunexpectedly or unpredictability ceases permitting communication), or anexpected limited signal strength of a communication channel (forexample, such that the communication does not support communication witha correctable number of errors), among other possibilities.

In some embodiments, a mobile device is disclosed for dynamicallyimplementing geofences. The mobile device can include a device housing,a memory device, and a hardware processor. The memory device can storegeofence data to define multiple geofences including a first geofenceand a second geofence, the first geofence being associated with adifferent virtual geographic boundary from the second geofence. Thehardware processor can be in communication with the memory device. Thehardware processor can: obtain geofencing rules according to a datafetch policy, the geofencing rules indicating how to identify a firstset of geofences with a first location and a second set of geofenceswith a second location; identify the first set of geofences to monitorfrom the multiple geofences according to the geofencing rules and thefirst location of the device housing, the geofencing rules indicatinghow to identify the first set of geofences with the first location;detect a change in location of the device housing from the firstlocation to the second location; and identify the second set ofgeofences to monitor from the multiple geofences according to thegeofencing rules and the second location.

The mobile device of the preceding paragraph can include one or more ofthe following features: The first set of geofences and the second set ofgeofences can be mutually exclusive. The first set of geofences and thesecond set of geofences can include a common geofence. The memory devicecan store the geofence data in a relational database. The memory devicecan store the geofence data in a geo-indexed database. The hardwareprocessor can: detect another location change of the mobile device fromthe second location to a third location; and trigger a first actionbased at least in part on the third location satisfying first criteriaof a first geofence of the second set of geofences.

BRIEF DESCRIPTION OF THE DRAWINGS

Throughout the drawings, reference numbers are re-used to indicatecorrespondence between referenced elements. The drawings are provided toillustrate aspects of the features described herein and not to limit thescope thereof.

FIG. 1 depicts an example computing environment for feature activationcontrol and data prefetching.

FIG. 2 is a data prefetch process performable in the computingenvironment of FIG. 1 .

FIG. 3 is a diagram of multiple example geofences that may be associatedwith an end user system in the computing environment of FIG. 1 .

FIG. 4 illustrates an example geofencing rules management processperformable in the computing environment of FIG. 1 .

FIG. 5 illustrates example components usable to construct one or more ofthe devices, systems, or servers in the computing environment of FIG. 1.

DETAILED DESCRIPTION Introduction

Geo-fencing technology can be implemented in numerous practicalapplications. For example, geo-fencing can be implemented in dronemanagement (for instance, a sporting event can use geo-fencing to createa temporary no-fly zone that prevents drones from crossing a definedperimeter), fleet management (for instance, geo-fencing can alert adispatcher when a truck driver breaks from his route), compliancemanagement (for instance, network logs can record geo-fence crossings todocument the proper use of devices and their compliance with establishedpolicies), asset management (for instance, a network administrator canset up alerts so that when a hospital-owned mobile device leaves thehospital grounds, the administrator can monitor the device’s locationand lock it down to prevent it from being used), marketing (forinstance, a company may send real-time, limited-time product offers orpersonalized promotions to a consumer’s mobile device when the mobiledevice enters a defined geographical area to encourage immediate actionsor buying by a user of the mobile device), human resource management(for instance, an employee’s smart card can send an alert to security ifthe employee attempts to enter an unauthorized, geo-fenced area), lawenforcement (for instance, an ankle bracelet can alert authorities if anindividual under house arrest leaves the premises), or home automation(for instance, when the home owner’s smartphone leaves the home’sgeo-fenced perimeter, the thermostat lowers itself to a settemperature).

While geofencing has numerous applications, the maximum number of activegeofences is generally restricted. For example, iOS SDK prevents anysingle mobile application from monitoring more than 20 geofencesconcurrently, and Android restricts a particular mobile device frommonitoring more than 100 geofences concurrently. Geofencing also cancreate a performance or a battery penalty on a mobile device.

Conventionally, there are limits on how many geofences a mobile device,or a mobile application running on a mobile device, can monitorsimultaneously. Systems, methods, and apparatuses described herein maysolve this or other problems by dynamically activating geofences “justin time.” As a mobile device is moved, the set of geofences monitored bythe mobile device is changed to include those geofences that the mobiledevice is closest to or otherwise more likely to utilize. In this way, aparticular geofence is monitored when it is likely to be triggered bythe location of the mobile device, but may be deactivated (for instance,not monitored) when it will not, or is unlikely to, be triggered by thedevice location. As a result, systems, methods, and apparatusesdescribed herein can provide for a hyper-personalized experience, suchas based on the location of the mobile device or one or more otherconditions. Moreover, the features described herein can facilitate areduced processing burden, increased computational efficiency, or betterresponsiveness for or by the mobile device as the mobile devicedynamically and responsively requests and processes data.

As an example, assume that 1000 geofences are associated with aparticular mobile app, and further assume that the mobile application isprevented (for instance, by an operating system of the mobile device)from monitoring more than 20 geofences simultaneously. Systems, methods,and apparatuses described herein can filter using a set of rules(sometimes referred to as geofencing rules) the list of 1000 geofencesdown to those geofences that are more likely to be utilized. Forexample, the set of rules can be used to filter the list down to asubset that have boundaries within a threshold distance (for instance, a500 m radius) from the location of the mobile device or are otherwisemore likely to be utilized. In this way, a subset of the 1000 geofences(and in this case, 20 or fewer) may be monitored (for example,activated). The threshold distance can be configurable so that anadministrator can adjust the size of the subset or monitoring asdesired. Other characteristics can also be used for the set of rules,such as determined-associations, a time-of-time, among otherpossibilities.

In an implementation that includes filtering based on a thresholddistance, as the location of the mobile device is changed, the filteringcan be updated such that any geofences that are no longer within thethreshold distance or are otherwise less likely to be utilized aredeactivated (for instance, removed from monitoring) and any geofencesthat are now within the threshold distance, but previously were notwithin the threshold distance, or are otherwise more likely to beutilized are activated (for instance, monitored).

Points of interest to be monitored can be added to a lightweightrelational database, which may contain a geo-index. The relationaldatabase can desirably further reduce the processing required to filterthe list of potential geofences (which may, in some cases, be quitelarge). The results of the filter can be more quickly returned, forexample, based on the latitude and longitude of a geofence to bemonitored than using some other filtering approaches. Furthermore,storing geofences in a relational database, such as a geo-indexeddatabase, can reduce the performance impact on the mobile device whenworking with large volumes of geofences.

By dynamically selecting which geofences are monitored based on thelocation of the mobile device, the limits on how many geofences a mobiledevice can monitor at a given time can be effectively bypassed oravoided. Furthermore, by monitoring those geofences that have boundarieswithin the configurable distance or are otherwise more likely to beutilized, geofences are less likely to be monitored when they havelittle to no chance of being triggered, thereby potentially freeing upgeofence monitoring “slots” for other mobile applications on the mobiledevice. Further still, such a dynamic selection of geofences can reducebattery consumption of the mobile device since the mobile device may not“wake” the mobile application as frequently to deliver location updates.

A mobile device can, in certain implementations, prefetch data so thatthe mobile device may operate (potentially fully operate) without anetwork connection or with an inconsistent network connection. Themobile device can execute an application which is designed around thefunction of data (for instance, geo-location targeting rules) and mayuse native latitude-longitude data to evaluate rules and providein-application experiences. The prefetching can be triggered by avariety of sources, such as local or remote to the mobile device, andresponsive to data, such as local geo-locational data for the mobiledevice, user behaviors or interactions with the mobile device, orresponsive to prompting from a server-side resource. For example, themobile device can reach an edge of a geo-fence (which may, for instance,occur when a user of the mobile device walks into an airport), a user ofthe mobile device switches the mobile device into an airplane mode (suchas may be defined or required by a government agency like the U.S.Federal Aviation Administration), or the Wi-Fi connection for the mobiledevice is connected or disconnected. A server-side prediction maytrigger a prefetching of data due to a predicted outcome (for instance,a user may be driving down a road and about to hit an area with no cellservice, so the mobile device can be instructed by a receivedserver-side prediction to prefetch particular data)

The data prefetched by a mobile device can include device rules (forinstance, geofences in an IF/THEN format, such as in a script file likeJavaScript Object Notation), contextual information or small databases(for instance, subsets of customer or product databases or similarrelational datasets), or content and media (for instance, images,videos, audio or other media files).

One example of the features described herein includes geo-triggeredmedia loading. As a user of a mobile device may walk into an airport,the mobile device can detect the entry into the airport and accordinglyautomatically download media for an offline experience on the mobiledevice for the user. For instance, an audio or video subscriptionservice installed or setup on the phone may automatically download anext 10 songs in a playlist or videos determined to be of interest tothe user.

Another example of the features described herein includes predictiveadvertisement loading. A server-side predictive model can detect that amobile device operated by a user may be likely to go offline. Theserver-side predictive model may predict that the mobile device may belikely to go offline because the user may be known to ride the subwaymost days at a consistent time. The server-side predictive model canmoreover predict that the user often plays a game application whileoffline. A server running the server-side predictive model can thus senda trigger for the mobile device or the game application to downloadmedia data (for instance, images) and rules to the mobile device so thatthe game application may display advertisements while the mobile deviceis offline.

Yet another example of the features described herein includes predictivemap generation. A route can be loaded (which can include or be used aspre-fetch rules) to a mobile device, and as the mobile device nears ageo-fence, the mobile device can prefetch the map images to attempt toensure continued display experiences while the mobile device istravelling through an area known for lacking network service.

Yet a further example of the features described herein includesrules-based data loading for servicing remote locations. A customerrelationship management (CRM) system can track appointments for a careprovider who is scheduled for a house visit in a rural area. Prior tothe house visit, a medical device in communication with the CRM systemcan prefetch a CRM dataset (for instance, patient health history) sothat the care provider may have the CRM dataset available despite anetwork connection for the mobile device during the house visit. Thismay be coupled with a predictive model that can recommend additionaldata for prefetching, such as medical journals or guides, and that maybe selected or determined based on a patient’s symptoms collected priorto the care provider’s arrival. The care provider may accordingly havethe CRM dataset and other information that may prove relevant but mightbe otherwise unavailable during the house visit due to an unavailable orunreliable network connection by the mobile device.

Overview

With unreliable networks, limited bandwidth, and high latency, it isdesirable for features of a mobile device to be functional, regardlessof network connectivity. Generally, for a feature (such as anapplication running on the mobile device) to function in an unsteady oroffline environment, the data that the application uses may be persistedlocally on the mobile device for subsequent lookups. However, given anincreasing number of applications installed on a typical smartphone, itcan be impractical for a mobile device, such as a smartphone, to locallystore all of the data associated with each application installed on themobile device. And even if the mobile device did store all of the datafor each application, at least some of the stored data may become stale.

Embodiments of the disclosed technology can utilize techniques foridentifying that a mobile device may have limited or be without networkconnectivity and then pre-emptively (sometimes referred to asprefetching) download data relating to one or more applications likelyto be used by the mobile device during limited or unavailable networkconnectivity. In this way, the one or more applications may be availablefor use (potentially with full capabilities) on the mobile device whenrequested, regardless of network connectivity, thereby improving theuser experience of the mobile device.

Real-time interactions with a server can allow a mobile device toretain, or have access to, the latest and most-updated information.Accordingly, when a network is available and notwithstandingconsiderations such as cost of data usage, it can generally be desirableto retrieve data over the network just-in-time rather than topre-emptively download the data for offline use. To balance the desirefor obtaining the latest and most-updated information with the potentialfor limited or lost network connectivity, embodiments of the disclosedtechnology can utilize techniques for identifying a period of time whena mobile device may likely have limited or no network connectivity. Theperiod of time can be imminent (for example, if a user provides an inputto cause the mobile device to enter an airplane mode) or non-imminent(for example, a mobile device may not be expected to have networkconnectivity during a flight that a user is expected to take in a fewdays). Based on a determination that the mobile device may not haveaccess to a reliable network, data for one or more features of themobile device may be pre-emptively downloaded. In contrast, based on adetermination that the mobile device may have access to a reliablenetwork, data may not be pre-emptively downloaded.

In some cases, a mobile device can pre-emptively download the data atany time before the period of non-connectivity. For instance, continuingwith the flight example above, the mobile device can download the dataat any time, such as a random or periodic time, before the user’s flightin a few days. In other instances, the mobile device can strategicallydetermine when to prefetch the data. For example, the mobile device candownload the data upon the occurrence of a particular event (forexample, when the mobile device connected to Wi-Fi), in accordance witha particular schedule (for example, download the data at 3:00 AM, whilethe mobile device is unlikely to be in use by a user), or based ondevice or connectivity parameters (for example, download the data whendevice or data utilization is currently relatively low). Bystrategically prefetching the data, the mobile device can download thedata at a time that may be less likely to inconvenience or takeresources from the user of the mobile device.

The type of data that is prefetched can vary. For example, theprefetched data can include device rules (for example, one or moregeofences), contextual information or small databases (for example,subsets of customer or product databases or similar relationaldatasets), or content and media (for example, images, videos, audio, orother media files). In some cases, the mobile device can determine whichdata to pre-emptively download.

Features disclosed herein therefore can include both (i) a determinationof when a mobile device is expected to lose or have limited networkconnectivity and (ii) a determination of what data to prefetch inanticipation of a lost or limited network connectivity. Thedeterminations can be made from or responsive to various inputs,including (a) behavioral data which may show an end user’s plan orlikelihood to leave network connectivity or to cause limited networkconnectivity for a mobile device, (b) device data which may reflect acharacteristic of the mobile device, such as entering of a geographicarea, an energy level of a power source of the mobile device, ormonitored current network capabilities, that may suggest future limitednetwork connectivity or loss of network connectivity for the mobiledevice, or (c) remote data generated by and received from a remoteserver and that can reflect processing by the remote server of thebehavioral data or the device data for the mobile device as well aspotentially behavioral data or device data from other mobile devices andthat may suggest limited network connectivity or loss of networkconnectivity for the mobile device in the future. The output of theconnectivity determination or data prefetch determination can beadjusted over time, such as by adjusting one or more algorithms used tocontrol the determinations. In some implementations, the one or morealgorithms can be adjusted by re-training or updated training (forinstance, using the behavioral data, the device data, or the remote dataor updates thereto) of a machine learning used to make thedeterminations.

User interfaces can be used to receive configuration inputs to controlhow or what data may be prefetched as described herein. Theconfiguration inputs may be provided as part of deterministic,probabilistic, or measured instructions for controlling prefetching. Thedeterministic instructions can include rules that a configuration usermay set based on known or fixed stages of navigation or behaviors by anend user. For instance, the deterministic instructions can indicate adesired action when an end user may be on step 3 of 4 of a funnel (suchas through a webpage) or to preload a tracking pixel (sometimes referredto as a conversion pixel) on a check out form for a concluding page(such as a thank you page). The probabilistic instructions can includepredictive triggers that a configuration user may set based on thebehavioral data, the device data, or the remote data described herein.For instance, the probabilistic instructions can indicate a triggeredaction of preloading a live chat on step 3 of 4 of a funnel if an enduser is predicted to be at least 90% likely to abandon the funnel. Themeasured instructions can include analytical threshold triggers based ondata collected. For instance, the measured instructions can indicate adesired action responsive to a page load time satisfying an average loadtime threshold (such as 5 seconds) or responsive to a time on pagesatisfying a time on page threshold (such as 5 seconds). The userinterfaces can be used to control monitoring of or actions associatedwith various characteristics, including those related to a device user(such as current historical [visitor], predicted values of the deviceuser, or application session characteristics), content (such as device,location, time of day, referral, or channel source characteristics), orcontent (such as page, video, or screen characteristics).

Dynamic Feature Activation Control and Data Prefetching

FIG. 1 illustrates a computing environment 100 for implementing variousfeatures, including some or all of the feature activation control, dataprefetching, and unsatisfactory network connection determinationfeatures, described herein. The computing environment 100 includes anetwork 108, an end user system 102, a configuration management usersystem 104, a content server 110, and a configuration control server120. To simplify discussion, FIG. 1 illustrates one end user system, oneconfiguration management user system, one content server, and oneconfiguration control server, but multiple such systems or servers maybe similarly used in the computing environment 100.

The end user system 102, the configuration management user system 104,the content server 110, and the configuration control server 120 maycommunicate with one another via the network 108. Although the network108 is illustrated as one connected network, the network 108 can includemultiple distinct or distributed networks. For example, theconfiguration management user system 104 can communicate with theconfiguration control server 120 via a separate and different networkfrom the network that the configuration control server 120 uses tocommunicate with the end user system 102. The network 108 can includeany type of communication network, such as one or more of a wide areanetwork (WAN), a local area network (LAN), a cellular network, an ad hocnetwork, a satellite network, a wired network, a wireless network, aWi-Fi network, a company intranet, the Internet, combinations of thesame, or the like.

The end user system 102 can include any type of computing system. Forexample, the end user system 102 may include any type of computingdevice(s), such as a mobile device (for example, a laptop, smart phone,PDA, tablet, or the like), a desktop, a car-console device, a wearabledevice (for example, a smart watch or glasses with computingfunctionality), to name a few. The end user system 102 may includehardware and software components for establishing communications overthe network 108. For example, the end user system 102 may be equippedwith networking equipment and network software applications (forexample, a browser) that facilitate communications via one or morenetworks (for example, the Internet or an intranet).

The end user system 102 can execute an application 103, such as with aprocessor of the end user system 102. The application 103 can be abrowser or an application software (such as a native application or aprogressive web application) that may be downloaded from an applicationmarketplace or remote server (such as the content server 110) orreceived before receipt by the end user, stored on the end user system102, and upon execution provide functionality to the end user system102. The application 103 can collect and report data indicative ofactions associated with the application 103. The actions can, forexample, include a launching or closing of the application 103,collections of sensor data by the application 103, or end userinteractions with the application 103.

The application 103 can operate according to policy rules 130 stored onthe end user system 102. In one example, the policy rules 130 caninclude data that defines conditions or boundaries for one or moregeofences. For example, the policy rules 130 can indicate how many orwhich geofences to monitor, when to trigger an event (for example,entrance and exit events), or geographical geofence boundaries. Inanother example, the policy rules 130 can include data that definesconditions for managing prefetching of data by the application 103 orthe end user system 102, such as one or more conditions for triggeringprefetching of data, one or more conditions usable for determining whatdata to prefetch upon determining to prefetch data, or how to processprefetched data prior to or subsequent to a loss of connection via thenetwork 108.

The monitoring for a particular geofence can include processing of ageographic location of the end user system 102 by one or moreapplications installed on the end user system 102, such as theapplication 103. The processing can, for instance, facilitate atriggering of one or more determinations or actions based on orresponsive to the geographic location of the end user system 102. Theremoval of monitoring for the particular geofence can result in the oneor more applications no longer processing the geographic location of theend user system 102. Thus, the removal of monitoring for the particulargeofence may mean that the one or more applications cease to be informedof the geographic location of the end user system 102 and accordinglymay also no longer perform the processing associated with having accessto the geographic location.

The application 103 or other application software installed on the enduser system 102 can access one or more content pages of a content siteor other content objects stored in content storage 112 of the contentserver 110. The content pages or content objects can be files or objectsthat may be accessed remotely and provided to the end user system 102.Accordingly, the content pages or content objects may be or include amedia content, web pages, documents (such as pdf documents), videos,images, text, combinations of the same, or the like. The content server110 may be a web server, an application server, a database server,combinations of the same, or the like.

The content server 110 can serve as an application marketplace fromwhich the application 103 or updates thereto can be communicated to ordownloaded by the end user system 102. The content server 110 can storecontent objects in the content storage 112. The content server 110 cantransmit the content objects to the end user system 102 in response to arequest for a content object or may push the content objects to the enduser system 102.

The configuration control server 120 can include a configuration datastorage 122 that may store configuration data for other devices, such asthe end user system 102 or the configuration management user system 104.The configuration control server 120 can determine the configurationdata by analyzing behavior or actions of the application 103, the enduser system 102, or from analyzing traffic or data communicated on thenetwork 108, as well as potentially behavior or actions of otherapplications or end user systems. Further, the configuration controlserver 120 can receive configuration data or updates thereto from theconfiguration management user system 104 to create or adjust the policyrules 130.

The configuration control server 120 can transmit or receive messagesvia the network 108, such as to or from the end user system 102 and orto or from configuration management user system 104. For example, theconfiguration control server 120 can transmit a message to one or bothof the end user system 102 or the configuration management user system104 providing or receiving the policy rules 130 or indications of orupdates to the policy rules 130. The end user system 102 can implementthe policy rules 130, such as part of rules engines, upon receipt. Theconfiguration control server 120 can be implemented in computer hardwareor software.

The configuration management user system 104 can include an application105, such as a browser or an application software (such as a nativeapplication or a progressive web application), that can output aninterface for presentation to a configuration user to permit theconfiguration user to create or adjust the policy rules 130. Theapplication 105 may, for instance, can output a content page (such as awebpage) that may be provided by the configuration control server 120.The configuration management user system 104 can be any type ofcomputing device including a mobile device (for example, a laptop, smartphone, PDA, tablet, or the like), a desktop, a car-console device, awearable devices (for example, a smart watch or glasses with computingfunctionality), to name a few.

The configuration management user system 104 can be operated byconfiguration management users, such as marketing professionals, websiteoperators, business users, operators of a content site or the contentserver 110, or any other individual who uses or manages mobile devicepolicies, including for geofences or prefetching. The configurationmanagement users may not be the end users of the application 103 incertain embodiments. The configuration management users can use theconfiguration management user system 104 to dynamically update thesettings for mobile device policies, such as the policy rules 130.

FIG. 2 is a data prefetch process 200 illustrating an example mode ofoperation of the computing environment 100 of FIG. 1 and may beimplemented by the various components shown in the computing environment100. The data prefetch process 200 may in particular illustrateprocessing by the end user system 102 in collaboration with theconfiguration control server 120. For convenience, the data prefetchprocess 200 is described in the context of the computing environment100, but may instead be implemented by other systems described herein orother computing systems not shown. Advantageously, in certainembodiments, the data prefetch process 200 provides an approach by whichthe end user system 102 may attempt to anticipate a disruption innetwork connectivity via the network 108 and prefetech data expected tobe used by the end user of the end user system 102 during thedisruption. The end user system 102 may look to behavior data, devicedata, or remote data to anticipate the disruption or determine handlingof prefeteching.

At block 202, the presence of the a trigger condition can be identified.For example, the end user system 102 can identify the presence of atrigger condition. The application 103 may, for instance, identify thetrigger condition. The trigger condition can be determined from [i]behavioral data associated with the end user which be indicative of alikelihood that the end user will leave network connectivity or causelimited network connectivity for the end user system 102, [ii] devicedata which can reflect a characteristic of the end user system 102 thatmay suggest future limited network connectivity or loss of networkconnectivity for the end user system 102, or [iii] remote data generatedby and received from another device and that can reflect processing bythe another device of the behavioral data or the device data for the enduser system 102 as well as potentially behavioral data or device datafrom other end user systems and that may suggest limited networkconnectivity or loss of network connectivity for the end user system 102in the future. The trigger condition may be reported to the application103 for identification, such as from a reported event (like an eventdetected and reported by another application or an operating system ofthe end user system 102 to the application 103) or a reported user input(like a user input detected by another application or an operatingsystem of the end user system 102 and reported to the application 103),or determined by the application 103, such as from processing data likeone or more user inputs to the application 103 or determining that datamanaged by the application 103 satisfies one or more criteria.

In general, the presence of the trigger condition can be linked with anunsatisfactory network connection for the end user system 102, such asan unsteady, weak, or missing signal connection. For example, thepresence of the trigger condition can indicate that the end user system102 may be likely to experience an unsatisfactory network connection atsome point in the future (such as within a threshold period of time like1 second, 2 seconds, 5 seconds, 10 seconds, 30 seconds, 1 minute, 2minutes, 5 minutes, 10 minutes, 30 minutes, 1 hour, 2 hours, 5 hours, 1day, 2 days, or 5 days or longer). The presence of the trigger conditionmay not mean that the end user system 102 will necessarily experiencethe unsatisfactory network connection. Rather, the presence of thetrigger condition can indicate that the end user system 102 may have aset likelihood (such as with a 25%, 50%, or 75% probability) ofexperiencing the unsatisfactory network connection. The likelihood ofthe end user system 102 experiencing the unsatisfactory networkconnection can be determined by the end user system 102 using apredictive model or from predictive information or instructions receivedfrom the configuration control server 120. In other cases, the presenceof the trigger condition indicates that the end user system 102 isexpected with certainty or planned to experience the unsatisfactorynetwork connection (such as within the threshold period of time).

A network connection can be considered unsatisfactory by the end usersystem 102 if one or more or all monitored connectivity parametersassociated with the network connection fail to (or are expected to failto) satisfy a connectivity threshold. The connectivity threshold can bebased at least on any one or any combination of the connectivityparameters described herein. For example, the connectivity parameterscan include one or more of a network bandwidth, a network speed, adownload speed, an upload speed, a communication file size limit, asignal strength, a number of packets dropped, a bit rate, an error rate,a network generation, a network type, or the like.

The connectivity threshold may be considered to not be satisfied (and anetwork connection may thus considered to be unsatisfactory) if one ormore of: the available bandwidth of a network does not satisfy abandwidth threshold (for example, corresponding to a bandwidth levelthat is considered satisfactory for communication purposes), theavailable network speed does not satisfy a speed threshold, theavailable download speed does not satisfy a download speed threshold,the available upload speed does not satisfy a upload speed threshold, afile size to be transferred exceeds a communication file size limit or aset percentage thereof (for instance, 10%, 20%, 25%, 50%, 75%, or thelike), the available signal strength does not satisfy a signal strengththreshold, a number of packets dropped over a period of time satisfies apackets threshold, the bit rate does not satisfy a bit rate threshold,an error rate satisfies an error rate threshold, an available networkgeneration (for example, 2G, 3G, 4G, 5G, LTE) does not satisfy ageneration threshold, or a network type (for example, Wi-Fi, cellular,Bluetooth, etc.) does not match a desired network type.

On the other hand, a network connection can be considered satisfactory(or expected to be satisfactory) if the network connection is steady oronline. Moreover, a network connection can be considered satisfactory ifone or more or all monitored connectivity parameters associated with thenetwork connection do (or are expected to) satisfy the connectivitythreshold.

The trigger condition can vary across implementations. As an example,the trigger condition can correspond a scheduled event for an end userof the end user system 102, such as a meeting, an appointment, alecture, a class, a concert, a movie, a flight, or the like. In somesuch cases, the end user system 102 can identify the presence of thescheduled event from a calendar or schedule associated with or managedvia the end user system 102. For example, the end user system 102 canparse calendar data for the end user to identify the presence of one ormore scheduled events.

As another example, the trigger condition can correspond to a particularlocation for the end user system 102. In some such cases, the end usersystem 102 can identify the presence of the trigger condition accordingto a location of the end user system 102. For example, the end usersystem 102 can identify the presence of the trigger condition bydetermining that the end user system 102 has entered a particular areaor crossed over a particular geographic boundary. To make thisdetermination, the end user system 102 can track or monitor the locationof the end user system 102, such as using GPS, RFID, cellular data,Wi-Fi or another wireless connection protocol which may be incorporatedin the end user system 102.

As yet another example, the trigger condition can correspond to one ormore metrics and a metrics threshold for the end user system 102. Insome such cases, the end user system 102 can identify the presence ofthe trigger condition by determining that the one or more metricssatisfies the metrics threshold. For instance, the one or more metricscan include a remaining energy level associated with a power source ofthe end user system 102. From determining that the remaining energylevel does not satisfy an energy level threshold, the end user system102 can identify the presence of the trigger condition.

As a further example, the trigger condition can correspond to apredictive trigger for the end user system 102. In some such cases, theend user system 102 can identify the presence of the trigger conditionfrom a prediction that an event will happen for the end user system 102or its end user. The predicted event can vary across implementations.For instance, the end user system 102 can predict that the end usersystem 102 will enter into a particular area or cross a particulargeofence boundary. In another instance, the end user system 102 canpredict that the end user of the end user system 102 is or will benavigating to or through an area with an unsatisfactory or limitedconnectivity network from an input to the end user system 102, such asthe application 103 (which may be serving to provide navigation orcommunication functionality for the end user), that indicates the enduser system 102 may or will likely enter into the area.

As yet a further example, the trigger condition can correspond to aconnectivity threshold associated with a network connection for the enduser system 102. In some such cases, the end user system 102 canidentify the presence of the trigger condition by determining that anetwork connection is lost (for example, no network connection isavailable or for the end user system 102 is not connected to the network108) or terminated (for example, by turning on an airplane mode orturning off cellular data for the end user system 102).

As an additional example, the trigger condition can correspond to a useraction with the end user system 102. For example, if the user action isproviding a user input to the end user system 102 to place the end usersystem 102 in an airplane mode, the end user system 102 can identify thepresence of the trigger condition from receiving the user input.

At block 204, data to prefetch can be identified. For example, the enduser system 102 can identify data to prefetch. The end user system 102may determine to identify the data to prefetch responsive to the enduser system 102 identifying the presence of the trigger condition atblock 202. The data to be prefetched by the end user system 102 caninclude device rules (for instance, geofencing rules), contextualinformation or small databases (for instance, subsets of customer orproduct databases or similar relational datasets), content and media(for instance, images, videos, audio, or other media files), oradvertisement data, among other possible data.

The end user system 102 can identify the data to prefetch according to adata prefetch policy. For example, the data prefetch policy can indicatewhich data to prefetch (such as how to select or determine data forprefetching or how much data to prefetch or whether to prefetch aparticular batch of data for multiple different applications that isdesignated to be prefetched upon satisfaction of a particularcondition), when to prefetch the data (such as upon occurrence of anevent or at a set time that may be based on a prediction of how soon theend user system 102 may lose or have limited connectivity and how soonthe end user system 102 may be expected to present the prefetecheddata), how to prefetch the data (such as which source from which torequest the data or how to structure a request for the data), how toprocess the prefetched data (such as to delay processing or processimmediately upon receipt), or the like. The data prefetch policy canindicate to prefetch data which is predicted to be used by the end userof the end user system 102 in the future. The data prefetch policy canbe determined from the policy rules 130 and may be determined with orwithout input from the end user.

The end user system 102 can identify the data to prefetch from variousinputs, such as the input data described with respect to block 202,including [i] behavioral data associated with the end user which can beindicative of a likelihood of the end user to leave network connectivityor cause limited network connectivity for the end user system 102 orwhat action or activity the end user may use the end user system 102 forduring the time of limited or no network connectivity, [ii] device datawhich can reflect a characteristic of the end user system 102 that maysuggest future limited network connectivity or loss of networkconnectivity for the end user system 102, including a potential durationof the time of limited or no network connectivity or an indication ofwhat action or activity the end user may use the end user system 102 forduring the time of limited or no network connectivity, or [iii] remotedata generated by and received from another device and that can reflectprocessing by the another device of the behavioral data or the devicedata for the end user system 102 as well as potentially behavioral dataor device data from other end user systems and that may suggest whatdata to prefetch in anticipation of the time of limited or no networkconnectivity. The various inputs can be input to one or algorithms,which provide identifications of the data to prefetch as an output.

At block 206, the data identified at block 204 can be requested. Forexample, the end user system 102 can request the data to be prefetchedvia the network 108 from another device, such as the content server 110.

At block 208, the data identified at block 204 can be received. Forexample, the end user system 102 can receive the data to be prefetchedvia the network 108 from the another device, such as the content server110. The content server 110 may have used the request from the end usersystem 102 to retrieve the data to be prefeteched from the contentstorage 112 and then transmitted the data to be prefetched via thenetwork 108.

At block 210, the data identified at block 204 can be processed. Forexample, the end user system 102 can process the data to be prefetchedby storing the data to be prefetched to a memory device for later use bythe application 103, such as after the end user system 102 experienceslimited or loss of network connectivity. The data to be prefetched maybe processed by the application 103 responsive to processing a userinput with the application 103, but may not be processed prior toprocessing the user input with the application 103. The data to beprefetched may be processed by the application 103 after the end usersystem 102 experiences limited or loss of network connectivity and notbefore the end user system 102 experiences limited or loss of networkconnectivity.

Data Prefetch Example Implementations

As a first example implementation of the data prefetch process 200 ofFIG. 2 , the end user system 102 can pre-emptively download media beforethe end user of the end user system 102 attends an event (such as boardsa flight). The end user system 102 can identify the presence of atrigger condition, which can be an event (for instance, the flight)being set, scheduled, or upcoming for the end user, by determining fromcalendar data, email confirmation, or interaction with an eventapplication that the end user is scheduled for the event.

Responsive to identifying the presence of the trigger condition, the enduser system 102 can identify data to prefetch. The data to prefetch caninclude media, such as videos (for example, that a user may want towatch during the flight), songs in a playlist, or advertisements forpresentation during or between the the videos or songs, or other datathat the user may be expected to be presented during the event. The enduser system 102 may identify a period of time associated with the event,which can include an event duration (for instance, from the boardingpass or boarding/landing time), as well as a buffer period (which may becustomized to an expected behavior by the end user, such as typicalevent arrival times) prior to the event to account for an early arrivalto the event by the end user.

The end user system 102 may determine when to prefetch the data, such asa time or range of times in which to download. For instance, the enduser system 102 can determine to prefetch the data when the end usersystem 102 may have or at least typically have a robust or consistentnetwork connection (for example, at 4:00 AM when the end user may likelybe sleeping and the end user may have access to a Wi-Fi connection) orat a set amount of time prior to the period of time when the end usersystem 102 is expected to experience limited or loss of networkconnectivity via the network 108 (for example, 12 or 24 hours inadvance). The end user system 102 may delay completing performance ofcertain user-requested actions, such as actions that may adverselyimpact an ability of the end user system 102 to successfully prefetchthe data (for example, entering an airplane mode responsive to a userinput to enter an airplane mode), until the end user system 102successfully prefetches the data.

As a second example implementation of the data prefetch process 200 ofFIG. 2 , the end user system 102 can pre-emptively download geofencerules or user data prior to, or upon, entering a particular geofence orlocation. The end user system 102 can identify the presence of a triggercondition, which can include the end user system 102 entering or passingthrough a location (for example, a boundary of a geofence), bydetermining that the end user is expected to be located in the locationor that the user may be on track across the location (for instance, theend user may drive down a road with the end user system 102 and beapproaching an area known to have no network connectivity, and the enduser system 102 may automatically determine this approaching limitedconnectivity situation from directions being followed in a mappingapplication on the end user system 102) with the end user system 102.

The end user system 102 can identify data to prefetch, which can includegeofencing rules or user data like map data. The end user system 102 mayidentify a period of time associated with the location, such as a periodof time until or at which the end user system 102 is expected to reachthe location, which can be used to control what or how much data may beprefetched. The end user system 102 can determine when to download thedata, such to download the data once the end user system 102 is within athreshold distance from the location or to delay the download in orderto avoid unnecessarily downloading data (for instance, if the end userhappens to take a different route than expected).

As a third example implementation of the data prefetch process 200 ofFIG. 2 , the end user system 102 can pre-emptively download data inresponse to a user providing a command (for example, a user input) toswitch the end user system 102 into an airplane mode (which can be amode in which some or all wireless communication functions of the enduser system 102 may be disabled).

The end user system 102 can identify the presence of a triggercondition, which can be the end user system 102 receiving oranticipating receiving a particular command indicative of the end userdesiring to limit or disable network connectivity (for example, anairplane mode activation or activation of a menu one, two, three, ormore steps prior to but likely to result in activation of the airplanemode).

The end user system 102 can identify data to prefetch, which can includemedia, advertisements, images, text, or the like, among other data. Theend user system 102 can identify a period of time associated with theuser input, which can be immediate or indicative of a change in arelatively short period of time in which the end user system 102 isexpected to have limited or lost its network connection. The end usersystem 102 can determine when to download the data, which in this casemay be immediately or within a threshold period of time (such as 0.5, 1,2, 3, 5, 7, 10, 30, or 60 seconds or more). Notably, the end user system102 may delay entry into the airplane mode for the purposes ofcompleting the prefetch of data.

Geofencing Activation Control

The end user system 102 of FIG. 1 , can pre-emptively download data inpreparation for the end user system being without a network connectionat some time in the future. In some cases, the data that is downloadedcan relate to one or more features of a mobile application, such asgeofencing technology features.

Geofencing technology can enable a mobile application on a mobile deviceto trigger an alert or action when the mobile device enters, leaves, orstays within in certain geographic boundaries, also known as geofences.Mobile application administrators can define the boundaries of thegeofences (for example, by longitude and latitude or throughuser-created or Web-based maps), and the location of the mobile devicecan be monitored using GPS, RFID, cellular data, Wi-Fi or anotherwireless connection protocol. FIG. 3 is a diagram 300 illustrating afirst geofence 302, a second geofence 304, a third geofence 306, and afourth genfence 308 that may be associated with the end user system 102of FIG. 1 .

The end user system 102 can use a set of rules (sometimes referred to asgeofencing rules) to filter a list of geofences down to those geofencesthat have boundaries within a threshold distance (for example, a 500 mradius) from the location of the end user system 102 or are otherwisemore likely to be utilized. In this way, a subset of the geofences onthe list of geofences (for example, 20 or fewer) may be monitored (forexample, activated). The threshold distance can be configurable so thata configuration user of the configuration management user system 104 canadjust the size of the subset or monitoring as desired.

The geofencing rules can remain in place at the end user system 102 asthe location of the end user system 102 changes. For example, thegeofencing rules can indicate to update the filtering when the end usersystem 102 moves. In this way, the geofences can be updated such thatany geofences that are no longer within the threshold distance or areotherwise less likely to be utilized are deactivated (for example,removed from monitoring) and any geofences that are now within thethreshold distance, but previously were not within the thresholddistance, or are otherwise more likely to be utilized are activated (forexample, monitored).

To reduce the processing required to filter the list of potentialgeofences (which could, in some cases, be quite large) by the end usersystem 102, points of interest to be monitored can be added to alightweight relational database, which may contain a geo-index. In thisway, the results of the filter can be quickly returned, for example,according to the latitude and longitude of a geofence to be monitored.Furthermore, storing geofences in a relational database, such as ageo-indexed database, can reduce the performance impact on the end usersystem 102 when working with large volumes of geofences.

By dynamically selecting which geofences are monitored according to thegeofencing rules, the limits on how many geofences the end user system102 can monitor may be effectively bypassed or avoided. Furthermore, bythe end user system 102 monitoring those geofences that have boundarieswithin the configurable distance or are otherwise more likely to beutilized, geofences are less likely to be monitored when they havelittle to no chance of being triggered, thereby potentially freeing upgeofence monitoring “slots” for other mobile applications on the enduser system 102. Further still, such a dynamic selection of geofencescan reduce power consumption of the end user system 102 because the enduser system 102 may not “wake” the mobile application as frequently todeliver location updates.

The end user system 102 can manage which geofences of the first geofence302, the second geofence 304, the third geofence 306, and the fourthgeofence 308 are monitored at a given time, and the management ofgeofences can be based at least on the location of the end user system102.

As a first example, at a first point in time, the end user system 102can be located at Location A. To manage which geofences are monitored atthe first point in time, the end user system 102 can determine whichgeofences are within a threshold distance 330 from the end user system102. In this instance, the threshold distance 330 can create a circularboundary 332 around the location of the end user system 102 (forexample, Location A). As illustrated in FIG. 3 , the circular boundary332 can overlap with at least a portion of the first geofence 302, thesecond geofence 304, and the third geofence 306. And the circularboundary 332 may not overlap with the fourth geofence 308. In view ofthis, at the first point in time, the first geofence 302, the secondgeofence 304, and the third geofence 306 can be monitored, and thefourth geofence 308 can be inactive or not monitored.

As a second example, at a second point in time, the end user system 102can be located at Location B. In this instance, a circular boundary 342(created by a threshold distance 340) around Location B can overlap withat least a portion of the second geofence 304, the third geofence 306,and the fourth geofence 308. And the circular boundary 342 may notoverlap with the first geofence 302. In view of this, at the secondpoint in time, the second geofence 304, the third geofence 306, and thefourth geofence 308 can be monitored, and the first geofence 302 can beinactive or not monitored.

The threshold distance 330 or the threshold distance 340 can varyacross. For example, the threshold distance 330 or the thresholddistance 340 can be set by the end user system 102, the configurationmanagement user system 104, or another system. In this way, thethreshold distance 330 or the threshold distance 340 can be adjusted sothat the size of the circular boundary 332 or the circular boundary 342can be increased or decreased. This can allow the circular boundary 332or the circular boundary 342 to capture more or fewer geofences. In somecases, the threshold distance 330 or the threshold distance 340 isdynamically updated so that the number of geofences captured within thecircular boundary 332 or the circular boundary 342 may not be greaterthan a threshold amount. For example, iOS SDK prevents any single mobileapplication from monitoring more than 20 geofences concurrently. In somesuch cases, the threshold distance 330 or the threshold distance 340 candynamically adjust so that the number of geofences captured within thecircular boundary 332 or the circular boundary 342 may not be greaterthan 20.

The first geofence 302 is illustrated as a circular area defined by aradius around a point of interest 312, the second geofence 304 isillustrated as a rectangular area, the third geofence 306 is illustratedas a pentagonal area, and the fourth geofence 308 is illustrated as atriangular area. The location, shape, or size of the boundary of ageofence can vary across implementations. For example, the location of apoint of interest, the location of a geofence, the shape of theboundary, or the size of the boundary can be set by the end user system102, the configuration management user system 104, or another system.

Prefetching Geofencing Rules

Geofences can be controlled on mobile devices according to policy rules,such as geofencing rules. The geofencing rules can indicate whichgeofences are available, which geofences to monitor and when, how toselect a set of geofences, when to activate or deactivate particulargeofences, how many geofences can be active at a particular time, ascope or barrier associated with a geofence, or the like. In some cases,geofencing rules can update over time. For example, configurationmanagement users can use the configuration management user system 104 toupdate the geofencing rules. As another example, the end user system 102can pre-emptively download the geofence rules in preparation for the enduser system being without a network connection at some time in thefuture.

FIG. 4 illustrates a geofencing rules management process 400. Thegeofencing rules management process 400 illustrates an example mode ofoperation of the computing environment 100 and may be implemented by thevarious components shown in the computing environment 100. Forconvenience, the geofencing rules management process 400 is described inthe context of the computing environment 100, but may instead beimplemented by other systems described herein or other computing systemsnot shown.

At block 402, policy rules can be obtained. For example, the end usersystem 102 can obtain the policy rules 130, which can include geofencingrules, or an update to the policy rules for the application 103 runningon the end user system 102. The end user system 102 can obtain thepolicy rules 130 or an update thereto as part of a data prefetch policyor a data fetch policy. For example, the end user system 102 canpre-emptively download the policy rules 130 or an update thereto inpreparation for the end user system 102 being without a networkconnection at some time in the future.

At block 404, a first set of geofences to monitor can be identified. Forexample, the end user system 102 can identify the first set of geofencesto monitor from the geofencing rules and a first location of the enduser system 102. The geofencing rules can indicate how to filter down alist of geofences associated with the application 103. The end usersystem 102 can use the geofencing rules and location data (for example,native lat/long location data) to determine which geofences are within athreshold distance from the first location. In this way, the end usersystem 102 can identify the first set and may activate or monitor thegeofences of the first set.

At block 406, a location change can be detected. For example, the enduser system 102 can detect a location change of the end user system 102from the first location to a second location, such as from monitoredGPS, RFID, cellular, Wi-Fi, or other location-identifying data.

At block 408, a second set of geofences to monitor can be identifiedfrom the location change detected at block 406. For example, the enduser system 102 can identify a second set of geofences to monitor fromthe geofencing rules and the second location. The identification of thesecond set of geofences to monitor can be performed using a similar orthe same approach as the approach used to identify the first set ofgeofences to monitor at block 404.

Example Computer System

FIG. 5 illustrates a computer system 500 usable to construct one or moreof the devices, systems (for example, the end user system 102 or theconfiguration management user system 104,), servers (for example, thecontent server 110 or the configuration control server 120), or the likewithin the computing environment 100 of FIG. 1 .

As shown in FIG. 5 , the computer system 500 can include (i) aprocessor(s) (CPUs) 510, (ii) an input/output device(s) 520 configuredto allow users to input and output information and interact with thecomputer system 500 as well as transfer and receive data or capture datawith one or more sensors, (iii) a read only memory device(s) (ROMs) 530or equivalents to provide nonvolatile storage of data or programs, (iv)a display(s) 550 such as a computer monitor or other display device, (v)a network connection(s) 540 and a network interface(s) 542 configured toallow the computer system 500 to connect to other systems, servers, orportable devices, as well as a memory space(s) 560 and a database(s)590. The database(s) 590 may be further divided or distributed assub-database(s) 590A-590N, with the sub-database(s) storing feature orfunction specific information associated with a particular feature orfunction. The various components shown in FIG. 5 may be incorporated ina computer(s) 570. It is noted that the various components shown in FIG.5 , including the database(s) 590, are typically included as part of thecomputer(s) 570, however, they may be external to the computer(s) 570 insome aspects. For example, the database(s) 590 may be external to thecomputer(s) 570 and may be part of a separate database computer systemor networked database system. In some instances, the computer system 500may be a computing device like a desktop computer, mobile phone, or aserver.

The memory space(s) 560 may include DRAM, SRAM, FLASH, hard disk drives,or other memory storage devices, such as a media drive(s) 580,configured to store an operating system(s) 562, an applicationprogram(s) 564, and data 568, and the memory space(s) 560 may be sharedwith, distributed with or overlap with the memory storage capacity ofthe database(s) 590. In some aspects, the memory space(s) 560 mayinclude the database(s) 590 or in some aspects the database(s) 590 mayinclude the data 568 as shown in the memory space(s) 560. The datastored in the memory space(s) 560 or the database(s) 590 may includeinformation, such as event data, event processing rules, data processingroutines, or other types of data described herein.

Additional Aspects and Terminology

Many other variations than those described herein will be apparent fromthis disclosure. For example, depending on the aspects, certain acts,events, or functions of any of the algorithms described herein can beperformed in a different sequence, can be added, merged, or left outaltogether (for example, not all described acts or events are necessaryfor the practice of the algorithms). Moreover, in certain aspects, actsor events can be performed concurrently, for example, throughmulti-threaded processing, interrupt processing, or multiple processorsor processor cores or on other parallel architectures, rather thansequentially. In addition, different tasks or processes can be performedby different machines or computing systems that can function together.

As used herein, the terms “application” or “program,” in addition tohaving their ordinary meanings, can refer to an executable code thatwhen executed by a hardware processor causes the hardware processor toperform operations in accordance with the executable code. In someinstances, an application or a program, moreover, may refer toexecutable code that was previously compiled.

One or more parts of or all of the configuration control server 120 canbe implemented in a distributed cloud platform that provides redundantor geographically dispersed access (for example, using a Multi-ContentDelivery Network). Although not illustrated herein, the implementationof the distributed cloud platform can be similar in some respects to thedistributed cloud platform described and illustrated with respect toFIG. 25 of U.S. Pat. No. 8,805,946, titled “SYSTEM AND METHOD FORCOMBINING CONTENT SITE VISITOR PROFILES,” which is incorporated byreference herein in its entirety.

One or more of the features, devices, servers, or systems describedherein can be combined with or performed along with one or more of thefeatures, devices, servers, or systems described in U.S. Pat. No.8,843,827, titled “ACTIVATION OF DORMANT FEATURES IN NATIVEAPPLICATIONS,” U.S. Pat. No. 9,363,311, titled “DELIVERY OF INSTRUCTIONSIN HOST APPLICATIONS,” U.S. Pat. No. 9,807,184, titled “CONFIGURATION OFCONTENT SITE USER INTERACTION MONITORING IN DATA NETWORKS,” and U.S.Pat. No. 10,327,018, titled “ENGAGEMENT TRACKING IN COMPUTER DATANETWORKS.” The disclosures of the foregoing patents are herebyincorporated by reference in their entirety.

One or more user inputs described in this disclosure may be receivedusing one or more different mechanisms. For example, user interfacecontrols may be selected by a user using one or more input options, suchas a mouse, touch screen input, or keyboard input, among other userinterface input options. The user interface controls selected by theuser can include one or more of buttons, dropdown boxes, select boxes,text boxes, check boxes, slider controls, or other user interfacecontrols.

The various illustrative logical blocks, modules, and algorithm stepsdescribed in connection with the aspects disclosed herein can beimplemented as electronic hardware, computer software, or combinationsof both. To clearly illustrate this interchangeability of hardware andsoftware, various illustrative components, blocks, modules, and stepshave been described above generally in terms of their functionality.Whether such functionality is implemented as hardware or softwaredepends upon the particular application and design constraints imposedon the overall system. The described functionality can be implemented invarying ways for each particular application, but such implementationdecisions should not be interpreted as causing a departure from thescope of the disclosure.

The various illustrative logical blocks and modules described inconnection with the aspects disclosed herein can be implemented orperformed by a machine, a microprocessor, a state machine, a digitalsignal processor (DSP), an application specific integrated circuit(ASIC), a field programmable gate array (FPGA) or other programmablelogic device, discrete gate or transistor logic, discrete hardwarecomponents, or any combination thereof designed to perform the functionsdescribed herein. A hardware processor can include electrical circuitryor digital logic circuitry configured to process computer-executableinstructions. In another aspect, a processor includes an FPGA or otherprogrammable device that performs logic operations without processingcomputer-executable instructions. A processor can also be implemented asa combination of computing devices, for example, a combination of a DSPand a microprocessor, a plurality of microprocessors, one or moremicroprocessors in conjunction with a DSP core, or any other suchconfiguration. A computing environment can include any type of computersystem, including, but not limited to, a computer system based on amicroprocessor, a mainframe computer, a digital signal processor, aportable computing device, a device controller, or a computationalengine within an appliance, to name a few.

The steps of a method, process, or algorithm described in connectionwith the aspects disclosed herein can be embodied directly in hardware,in a software module stored in one or more memory devices and executedby one or more processors, or in a combination of the two. A softwaremodule can reside in RAM memory, flash memory, ROM memory, EPROM memory,EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or anyother form of non-transitory computer-readable storage medium, media, orphysical computer storage known in the art. An example storage mediumcan be coupled to the processor such that the processor can readinformation from, and write information to, the storage medium. In thealternative, the storage medium can be integral to the processor. Thestorage medium can be volatile or nonvolatile. The processor and thestorage medium can reside in an ASIC.

Conditional language used herein, such as, among others, “can,” “might,”“may,” “e.g.,” and the like, unless specifically stated otherwise, orotherwise understood within the context as used, is generally intendedto convey that certain aspects include, while other aspects do notinclude, certain features, elements or states. Thus, such conditionallanguage is not generally intended to imply that features, elements orstates are in any way required for one or more aspects or that one ormore aspects necessarily include logic for deciding, with or withoutauthor input or prompting, whether these features, elements or statesare included or are to be performed in any particular aspect. The terms“comprising,” “including,” “having,” and the like are synonymous and areused inclusively, in an open-ended fashion, and do not excludeadditional elements, features, acts, operations, and so forth. Also, theterm “or” is used in its inclusive sense (and not in its exclusivesense) so that when used, for example, to connect a list of elements,the term “or” means one, some, or all of the elements in the list.Further, the term “each,” as used herein, in addition to having itsordinary meaning, can mean any subset of a set of elements to which theterm “each” is applied.

While the above detailed description has shown, described, and pointedout novel features as applied to various aspects, it will be understoodthat various omissions, substitutions, and changes in the form anddetails of the devices or algorithms illustrated can be made withoutdeparting from the spirit of the disclosure. As will be recognized,certain aspects described herein can be embodied within a form that doesnot provide all of the features and benefits set forth herein, as somefeatures can be used or practiced separately from others.

What is claimed is: 1-20. (canceled)
 21. A system for intelligentlyprefetching data via a computer network, the system comprising: a userinterface configured to receive a plurality of user inputs from a user;a memory device configured to store an application; and a hardwareprocessor configured to: receive an instruction via a user input of theplurality of user inputs, the instruction indicating to activate a modein which wireless communications by the hardware processor via acommunication network are disabled; responsive to receipt of theinstruction and prior to activation of the mode, retrieve prefetch datavia the communication network; and activate the mode subsequent toretrieval of the prefetch data.
 22. The system of claim 21, wherein thehardware processor is configured to process the prefetch data with theapplication responsive to processing a second user input of theplurality of user inputs.
 23. The system of claim 21, wherein thehardware processor is configured to communicate over a plurality ofdifferent types of wireless communication networks.
 24. The system ofclaim 23, wherein in the mode all wireless communications by thehardware processor are disabled.
 25. The system of claim 21, wherein theinstruction to activate the mode corresponds to an instruction toactivate an airplane mode.
 26. The system of claim 21, wherein thehardware processor is configured to: determine application data that islikely to be utilized by an application subsequent to the activation ofthe mode; and identify the prefetch data to request based on theapplication data.
 27. The system of claim 21, wherein the hardwareprocessor is configured to: determine a duration that the mode isexpected to be active, and identify the prefetch data to request basedon the duration.
 28. A computer-implemented method comprising: undercontrol of a computing system comprising one or more computing devicesconfigured to execute specific instructions: receiving an instructionvia a user input of a plurality of user inputs received by a userinterface, the instruction indicating to activate a mode in whichwireless communications by a hardware processor via a communicationnetwork are disabled; responsive to receipt of the instruction and priorto activation of the mode, retrieving prefetch data via thecommunication network; and activating the mode subsequent to retrievalof the prefetch data.
 29. The computer-implemented method of claim 28,further comprising processing the prefetch data with an applicationresponsive to processing a second user input of the plurality of userinputs.
 30. The computer-implemented method of claim 28, furthercomprising communicating over a plurality of different types of wirelesscommunication networks.
 31. The computer-implemented method of claim 30,wherein activating the mode comprises disabling all wirelesscommunications by the hardware processor.
 32. The computer-implementedmethod of claim 28, wherein receiving the instruction to activate themode comprises receiving an instruction to activate an airplane mode.33. The computer-implemented method of claim 28, further comprising:determining application data that is likely to be utilized by anapplication subsequent to the activation of the mode; and identifyingthe prefetch data to request based on the application data.
 34. Thecomputer-implemented method of claim 28, further comprising: determininga duration that the mode is expected to be active, and identifying theprefetch data to request based on the duration.
 35. Non-transitoryphysical computer storage comprising computer-executable instructionsstored thereon that, when executed by one or more processors of a mobiledevice, are configured to implement a process comprising: receiving aninstruction via a user input of a plurality of user inputs received by auser interface, the instruction indicating to activate a mode in whichwireless communications by a hardware processor via a communicationnetwork are disabled; responsive to receipt of the instruction and priorto activation of the mode, retrieving prefetch data via thecommunication network; and activating the mode subsequent to retrievalof the prefetch data via the communication network.
 36. Thenon-transitory physical computer storage of claim 35, wherein theprocess comprises processing the prefetch data with an applicationresponsive to processing a second user input of the plurality of userinputs.
 37. The non-transitory physical computer storage of claim 35,wherein the process comprises communicating over a plurality ofdifferent types of wireless communication networks.
 38. Thenon-transitory physical computer storage of claim 37, wherein activatingthe mode comprises disabling all wireless communications by the hardwareprocessor.
 39. The non-transitory physical computer storage of claim 35,wherein the process comprises: determining application data that islikely to be utilized by an application subsequent to the activation ofthe mode; and identifying the prefetch data to request based on theapplication data.
 40. The non-transitory physical computer storage ofclaim 35, further comprising: determining a duration that the mode isexpected to be active, and identifying the prefetch data to requestbased on the duration.